Skip to content

Stop the frame jumping when a reader switches page - #50

Merged
oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-samples-nav-wrviw6
Aug 19, 2026
Merged

Stop the frame jumping when a reader switches page#50
oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-samples-nav-wrviw6

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

The shared bar shipped onto three pages that centre in three different containers — 64rem here, 1180px on Learn, 62rem on Controls. So the brand, the heading and the first card all moved sideways on every switch. Three widths read as three sites, which is the opposite of what a shared bar is for.

One column

1180px with a 24px gutter — 1132px of content on all three pages. Learn's width, because it was the widest and this page was on the narrow side. --wide stops being 64rem and becomes that one column.

The masthead joins the bar as a shared block: the full-bleed <header>, its .inner, the eyebrow, the h1 scale and the lede. This page gains the gradient band the learning path already had, so the top looks the same wherever you arrive. Only the words differ now — the note about the missing Playground button, and the smaller lede the packages section uses, are still this page's own.

<body> gives up its side padding: the gutter has to belong to the containers for a full-bleed header to reach the window edge, so main and footer carry it instead.

The block no longer reads --family-width / --family-gutter / --family-bleed. With one column everywhere there is nothing left for a page to vary, so it carries the two numbers itself and is fully self-contained — one less way for a copy to drift.

Two things the measuring turned up

  • The eyebrow was uppercased. text-transform: uppercase on .brand rendered abap2UI5 · samples-stack as ABAP2UI5 · SAMPLES-STACK on every one of the three pages. That is the one place a page must not get its own name wrong, so the transform is gone and a comment says why.
  • The results grid overflowed. repeat(auto-fill, minmax(23rem, 1fr)) asks for a 368px track; a 390px screen with a 24px gutter has 342px to give, so the page scrolled 2px sideways — the one regression the wider gutter introduced, and caught by the same pass that measured the alignment. Every card grid here now guards its minimum with min(…, 100%).

Verification

Measured in Chromium at 1440px on all three pages: .family-brand, the eyebrow, the h1, the three-pages strip and the footer text now all start at x = 154 on every page, and the h1 computes to 40px on every page. Before, the three pages disagreed on all five.

Re-ran the full pass — light and dark, 1280px and 390px, all three pages: right page marked, exactly one marker per block, no sideways scrolling anywhere (the 2px was the last one), no console errors. check:web, check:prose and check:family-nav pass, and the shared block is byte-identical across the three repositories (220 lines, verified).


Generated by Claude Code

The bar landed on three pages that centre in three different containers -
64rem here, 1180px on Learn, 62rem on Controls - so the brand, the
heading and the first card moved sideways on every switch. Three widths
read as three sites, which is the opposite of what a shared bar is for.

One column now: 1180px with a 24px gutter, so 1132px of content on all
three. The masthead joins the bar as a shared block - the full-bleed
header, its .inner, the eyebrow, the h1 scale and the lede - so this page
gains the gradient band the learning path already had. Only the words
differ now; the note about the missing playground button and the smaller
lede the packages section uses are still this page's own.

<body> gives up its side padding, because the gutter has to belong to the
containers for a full-bleed header to reach the window edge. --wide stops
being 64rem and becomes that one column.

The block no longer reads --family-* tokens. With one column everywhere
there is nothing left for a page to vary, so it carries the two numbers
itself and is self-contained - one less way for a copy to drift.

Two things the measuring turned up: the eyebrow was uppercased, so every
page shouted ABAP2UI5, which is the one place a page must not get its own
name wrong; and the results grid asked for a 23rem minimum track, which a
390px screen cannot give once the gutter is 24px - it pushed the page 2px
sideways, and every card grid here now guards its minimum with
min(…, 100%).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QKMsbCiREgnpdfVvQYsa2
Copilot AI lite review requested due to automatic review settings August 19, 2026 15:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@oblomov-dev
oblomov-dev merged commit c214c52 into main Aug 19, 2026
22 checks passed
@oblomov-dev
oblomov-dev deleted the claude/abap2ui5-samples-nav-wrviw6 branch August 19, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants